/*
 *    Copyright 2019 The aio-socket Project
 *
 *    The aio-socket Project Licenses this file to you under the Apache License,
 *    Version 2.0 (the "License"); you may not use this file except in compliance
 *    with the License. You may obtain a copy of the License at:
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *    Unless required by applicable law or agreed to in writing, software
 *    distributed under the License is distributed on an "AS IS" BASIS,
 *    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *    See the License for the specific language governing permissions and
 *    limitations under the License.
 */
package cn.starboot.http.server.intercept;

import java.lang.reflect.Method;

public final class MethodInvocationImpl implements MethodInvocation {
	private final Method method;
	private final Object[] args;
	private final Object object;

	public MethodInvocationImpl(Method method, Object[] args, Object object) {
		this.method = method;
		this.args = args;
		this.object = object;
	}

	@Override
	public Method getMethod() {
		return method;
	}

	@Override
	public Object[] getArguments() {
		return args;
	}

	@Override
	public Object getThis() {
		return object;
	}

	@Override
	public Object proceed() throws Throwable {
		return method.invoke(object, args);
	}

}
